Add a special size for drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
authorOwen Taylor <otaylor@redhat.com>
Mon, 25 Jun 2001 01:51:58 +0000 (01:51 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 25 Jun 2001 01:51:58 +0000 (01:51 +0000)
Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)

* gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
with un'reffing wrong list reported by Jeff Franks.

* gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.

* gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
for the default icon. Remove inline XPM.

* gtk/gtkstock.h gtk/gtkiconfactory.c:
Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
is used for GTK_STOCK_DND, but it is a bit too small.)

* gtk/stock-icons/stock_dnd_multiple.png
gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.

* gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
TRUE when starting a drag. In other cases, we are
just observing. (#52995)

* gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add
function to set the icon for a drag from a GdkPixbuf
or stock ID.

* gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}):
Likewise, for drag sources.

* gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
(Now should be done using the stock system.)

22 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/gtk/gtk-sections.txt
docs/reference/gtk/tmpl/gtk-unused.sgml
docs/reference/gtk/tmpl/gtkdnd.sgml
docs/reference/gtk/tmpl/gtkiconfactory.sgml
docs/reference/gtk/tmpl/gtktextview.sgml
gtk/gtkdnd.c
gtk/gtkdnd.h
gtk/gtkenums.h
gtk/gtkiconfactory.c
gtk/gtkmain.c
gtk/gtkstock.h
gtk/stock-icons/Makefile.am
gtk/stock-icons/stock_dnd_multiple.png [new file with mode: 0644]
gtk/stock-icons/stock_dnd_multiple_32.png [new file with mode: 0644]

index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 99bfd4ac8ef04cfed95415e58dc2c401e6ba4730..1ec7cfe0297c6bab6b6673ac0f51ce828ceb2774 100644 (file)
@@ -1,3 +1,37 @@
+Sun Jun 24 21:34:32 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkenums.h gtk/gtkiconfactory.c: Add a special size for
+       drag-and-drop GTK_ICON_SIZE_DND (Default to 32x32)
+
+       * gtk/gtkdnd.c (gtk_drag_dest_set_target_list): Fix problem
+       with un'reffing wrong list reported by Jeff Franks.
+
+       * gtk/gtkdnd.[ch] (_gtk_drag_{source,}dest_handle_event): _prefix.
+
+       * gtk/gtkdnd.c (gtk_drag_set_icon_default): Use GTK_STOCK_DND
+       for the default icon. Remove inline XPM.
+
+       * gtk/gtkstock.h gtk/gtkiconfactory.c:
+       Add GTK_STOCK_DND GTK_STOCK_DND_MULTIPLE (Currently, stock_new
+       is used for GTK_STOCK_DND, but it is a bit too small.)
+
+       * gtk/stock-icons/stock_dnd_multiple.png
+       gtk/stock-icons/Makefile.am: New stock icon moved from gnome-libs.
+
+       * gtk/gtkdnd.c (gtk_drag_source_event_cb): Only return
+       TRUE when starting a drag. In other cases, we are
+       just observing. (#52995)
+
+       * gtk/gtkdnd.[ch] (gtk_drag_set_icon_{stock,pixbuf}): Add 
+       function to set the icon for a drag from a GdkPixbuf
+       or stock ID.
+
+       * gtk/gtkdnd.[ch] (gtk_drag_source_set_icon_{stock,pixbuf}): 
+       Likewise, for drag sources.
+
+       * gtk/gtkdnd.h: Deprecate gtk_drag_set_default_icon.
+       (Now should be done using the stock system.)
+
 Sun Jun 24 12:06:47 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size): 
index 6ddd4769890bd32e90fdfc46315fe490f2b28afe..0c9902106472b8dc49c1c6587525a4ce91a57d5f 100644 (file)
@@ -1,3 +1,8 @@
+Sun Apr 15 15:04:12 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/tmpl/gtkdnd.sgml: Move some of the function docs to the
+       C files.
+
 Thu Jun 21 12:31:29 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtk-sections.txt: Update a bit.
index a6e323e5908a1d4c81f29f78faa760c6764299f0..fe1a409c2cc604a7f6df8e820a3f110c5a2cff13 100644 (file)
@@ -3545,9 +3545,6 @@ gtk_drag_check_threshold
 gtk_drag_source_set
 gtk_drag_source_set_icon
 gtk_drag_source_unset
-<SUBSECTION Internals>
-gtk_drag_source_handle_event
-gtk_drag_dest_handle_event
 </SECTION>
 
 
index 5e03313b2588c84a8ff00328dab601b05c51e265..889137cefe6a9c6191ed35dc7c700e2937397c27 100644 (file)
@@ -1394,6 +1394,22 @@ This function is not usually used by users.
 @tree_column: 
 @titles: 
 
+<!-- ##### FUNCTION gtk_drag_dest_handle_event ##### -->
+<para>
+Internal function.
+</para>
+
+@toplevel: 
+@event: 
+
+<!-- ##### FUNCTION gtk_drag_source_handle_event ##### -->
+<para>
+Internal function.
+</para>
+
+@widget: 
+@event: 
+
 <!-- ##### FUNCTION gtk_editable_changed ##### -->
 <para>
 Causes the "changed" signal to be emitted.
@@ -1942,6 +1958,15 @@ Creates a border around the arrows of a #GtkSpinButton. The type of border is de
 @first: 
 @second: 
 
+<!-- ##### FUNCTION gtk_text_view_set_text_window_size ##### -->
+<para>
+
+</para>
+
+@text_view: 
+@width: 
+@height: 
+
 <!-- ##### FUNCTION gtk_trace_referencing ##### -->
 <para>
 Private: print debugging information while doing a gtk_object_ref() or 
index f73ba58918ce555602794e6e3ec7b2d6ed8abb52..fcf88848fcfac80706d0411a7b79afac14afe65d 100644 (file)
@@ -265,56 +265,43 @@ gtk_drag_source_set() is used.
 
 <!-- ##### FUNCTION gtk_drag_set_icon_widget ##### -->
 <para>
-Change the icon for a widget to a given widget. GTK+
-will not destroy the icon, so if you don't want
-it to persist, you should connect to the "drag_end" 
-signal and destroy it yourself.
 </para>
 
-@context: the context for a drag. (This must be called 
-          with a  context for the source side of a drag)
-@widget: A toplevel window to use as an icon.
-@hot_x: The X offset within @widget of the hotspot.
-@hot_y: The Y offset within @widget of the hotspot.
+@context: 
+@widget: 
+@hot_x: 
+@hot_y: 
 
 
 <!-- ##### FUNCTION gtk_drag_set_icon_pixmap ##### -->
 <para>
-Sets a given pixmap as the icon for a given drag.
-GTK+ retains a reference count for the arguments, and 
-will release them when they are no longer needed.
 </para>
 
-@context: the context for a drag. (This must be called 
-          with a  context for the source side of a drag)
-@colormap: the colormap of the icon
-@pixmap: the image data for the icon
-@mask: the transparency mask for an image.
-@hot_x: The X offset within @widget of the hotspot.
-@hot_y: The Y offset within @widget of the hotspot.
+@context: 
+@colormap: 
+@pixmap: 
+@mask: 
+@hot_x: 
+@hot_y: 
 
 
 <!-- ##### FUNCTION gtk_drag_set_icon_default ##### -->
 <para>
-Set the icon for a particular drag to the default
-icon.
 </para>
 
-@context: the context for a drag. (This must be called 
-          with a  context for the source side of a drag)
+@context: 
 
 
 <!-- ##### FUNCTION gtk_drag_set_default_icon ##### -->
 <para>
-Change the default drag icon. GTK+ retains a reference count for the
-arguments, and will release them when they are no longer needed.
+
 </para>
 
-@colormap: the colormap of the icon
-@pixmap: the image data for the icon
-@mask: the transparency mask for an image.
-@hot_x: The X offset within @widget of the hotspot.
-@hot_y: The Y offset within @widget of the hotspot.
+@colormap: 
+@pixmap: 
+@mask: 
+@hot_x: 
+@hot_y: 
 
 
 <!-- ##### FUNCTION gtk_drag_check_threshold ##### -->
@@ -347,16 +334,12 @@ widget. The widget must have a window.
 
 <!-- ##### FUNCTION gtk_drag_source_set_icon ##### -->
 <para>
-Sets the icon that will be used for drags from a 
-particular widget. GTK+ retains a reference count
-for the arguments, and will release them when
-they are no longer needed.
 </para>
 
-@widget: a #GtkWidget
-@colormap: the colormap of the icon
-@pixmap: the image data for the icon
-@mask: the transparency mask for an image.
+@widget: 
+@colormap: 
+@pixmap: 
+@mask: 
 
 
 <!-- ##### FUNCTION gtk_drag_source_unset ##### -->
@@ -367,21 +350,3 @@ Undo the effects of gtk_drag_source_set().
 @widget: a #GtkWidget
 
 
-<!-- ##### FUNCTION gtk_drag_source_handle_event ##### -->
-<para>
-Internal function.
-</para>
-
-@widget: 
-@event: 
-
-
-<!-- ##### FUNCTION gtk_drag_dest_handle_event ##### -->
-<para>
-Internal function.
-</para>
-
-@toplevel: 
-@event: 
-
-
index 2eec513dfe746ad17bfc1f0ffd41de76445f68d9..16a6bf138c6a378f6bb5fc972394b573f80fd64a 100644 (file)
@@ -62,6 +62,7 @@ looking up the icon to use for a given stock ID.
 @GTK_ICON_SIZE_SMALL_TOOLBAR: 
 @GTK_ICON_SIZE_LARGE_TOOLBAR: 
 @GTK_ICON_SIZE_BUTTON: 
+@GTK_ICON_SIZE_DND: 
 @GTK_ICON_SIZE_DIALOG: 
 
 <!-- ##### FUNCTION gtk_icon_source_copy ##### -->
index 3be7141f8fb2f54ec8f9a375f22879ff0ef96447..57704920f0029157295ea8351efd330b53c0fdd6 100644 (file)
@@ -242,16 +242,6 @@ types related to the text widget and how they work together.
 @size: 
 
 
-<!-- ##### FUNCTION gtk_text_view_set_text_window_size ##### -->
-<para>
-
-</para>
-
-@text_view: 
-@width: 
-@height: 
-
-
 <!-- ##### FUNCTION gtk_text_view_forward_display_line ##### -->
 <para>
 
index 5d14a4e8d1465dd7070c04a9c55f6d95bf0265d9..bff1b76b45a5ea278ff70eb00825fb14ba35c58e 100644 (file)
 #include "gdk/gdkkeysyms.h"
 
 #include "gtkdnd.h"
+#include "gtkimage.h"
 #include "gtkinvisible.h"
 #include "gtkmain.h"
 #include "gtksignal.h"
+#include "gtkstock.h"
 #include "gtkwindow.h"
 
 static GSList *drag_widgets = NULL;
@@ -67,9 +69,17 @@ struct _GtkDragSourceSite
   GdkModifierType    start_button_mask;
   GtkTargetList     *target_list;        /* Targets for drag data */
   GdkDragAction      actions;            /* Possible actions */
+
+  /* Drag icon */
+  GtkImageType icon_type;
+  union
+  {
+    GtkImagePixmapData pixmap;
+    GtkImagePixbufData pixbuf;
+    GtkImageStockData stock;
+  } icon_data;
+
   GdkColormap       *colormap;          /* Colormap for drag icon */
-  GdkPixmap         *pixmap;             /* Icon for drag data */
-  GdkBitmap         *mask;
 
   /* Stored button press information to detect drag beginning */
   gint               state;
@@ -349,45 +359,6 @@ static struct {
 
 static const gint n_drag_cursors = sizeof (drag_cursors) / sizeof (drag_cursors[0]);
 
-/* XPM */
-static const char *drag_default_xpm[] = {
-"32 32 3 1",
-"      c None",
-".     c #000000",
-"+     c #FFFFFF",
-"                                ",
-"                                ",
-"                ..              ",
-"              ..+.              ",
-"             ..++..             ",
-"           ...++++.             ",
-"         ...++++++..            ",
-"       ...+++++++++.            ",
-"     ...+++++++++++..           ",
-"    ..+.++++++++++++..          ",
-"     .++.++++++++++++..         ",
-"     .+++.++++++++++++..        ",
-"     .++++.++++++++++++.        ",
-"     .+++.+++++++++++++..       ",
-"     .++.+++++++++++++++..      ",
-"     .+.+++++++++++++++++..     ",
-"     ..+++++++++++++++++++..    ",
-"     ..++++++++++++++++++++.    ",
-"     .++++++++++++++++++++..    ",
-"     ..+++++++++++++++++..      ",
-"      .++++++++++++++++..       ",
-"      ..+++++++++++++...        ",
-"       .++++++++++++..          ",
-"       ..+++++++++..            ",
-"        .++++++++..             ",
-"        ..++++++..              ",
-"         .+++++..               ",
-"          .++..                 ",
-"           ...                  ",
-"           ..                   ",
-"                                ",
-"                                "};
-
 /*********************
  * Utility functions *
  *********************/
@@ -983,7 +954,7 @@ gtk_drag_dest_set_target_list (GtkWidget      *widget,
     }
 
   if (target_list)
-    gtk_target_list_ref (site->target_list);
+    gtk_target_list_ref (target_list);
   
   if (site->target_list)
     gtk_target_list_unref (site->target_list);
@@ -993,7 +964,7 @@ gtk_drag_dest_set_target_list (GtkWidget      *widget,
 
 
 /*************************************************************
- * gtk_drag_dest_handle_event:
+ * _gtk_drag_dest_handle_event:
  *     Called from widget event handling code on Drag events
  *     for destinations.
  *
@@ -1004,7 +975,7 @@ gtk_drag_dest_set_target_list (GtkWidget      *widget,
  *************************************************************/
 
 void
-gtk_drag_dest_handle_event (GtkWidget *toplevel,
+_gtk_drag_dest_handle_event (GtkWidget *toplevel,
                            GdkEvent  *event)
 {
   GtkDragDestInfo *info;
@@ -1894,6 +1865,8 @@ gtk_drag_source_set (GtkWidget            *widget,
   else
     {
       site = g_new0 (GtkDragSourceSite, 1);
+
+      site->icon_type = GTK_IMAGE_EMPTY;
       
       gtk_signal_connect (GTK_OBJECT (widget), "button_press_event",
                          GTK_SIGNAL_FUNC (gtk_drag_source_event_cb),
@@ -1942,16 +1915,48 @@ gtk_drag_source_unset (GtkWidget        *widget)
     }
 }
 
-/*************************************************************
- * gtk_drag_source_set_icon:
- *     Set an icon for drags from this source.
- *   arguments:
- *     colormap: Colormap for this icon
- *     pixmap:
- *     mask
- *   results:
- *************************************************************/
+static void
+gtk_drag_source_unset_icon (GtkDragSourceSite *site)
+{
+  switch (site->icon_type)
+    {
+    case GTK_IMAGE_EMPTY:
+      break;
+    case GTK_IMAGE_PIXMAP:
+      if (site->icon_data.pixmap.pixmap)
+       gdk_pixmap_unref (site->icon_data.pixmap.pixmap);
+      if (site->icon_data.pixmap.mask)
+       gdk_pixmap_unref (site->icon_data.pixmap.mask);
+      break;
+    case GTK_IMAGE_PIXBUF:
+      g_object_unref (G_OBJECT (site->icon_data.pixbuf.pixbuf));
+      break;
+    case GTK_IMAGE_STOCK:
+      g_free (G_OBJECT (site->icon_data.stock.stock_id));
+      break;
+    default:
+      g_assert_not_reached();
+      break;
+    }
+  site->icon_type = GTK_IMAGE_EMPTY;
+  
+  if (site->colormap)
+    gdk_colormap_unref (site->colormap);
+  site->colormap = NULL;
+}
 
+/**
+ * gtk_drag_source_set_icon:
+ * @widget: a #GtkWidget
+ * @colormap: the colormap of the icon
+ * @pixmap: the image data for the icon
+ * @mask: the transparency mask for an image.
+ * 
+ * Sets the icon that will be used for drags from a particular widget
+ * from a pixmap/mask. GTK+ retains a reference count for the
+ * arguments, and will release them when they are no longer needed.
+ * Use gtk_drag_source_set_icon_pixbuf() instead.
+ **/
 void 
 gtk_drag_source_set_icon (GtkWidget     *widget,
                          GdkColormap   *colormap,
@@ -1961,40 +1966,81 @@ gtk_drag_source_set_icon (GtkWidget     *widget,
   GtkDragSourceSite *site;
 
   g_return_if_fail (widget != NULL);
+  g_return_if_fail (GDK_IS_COLORMAP (colormap));
+  g_return_if_fail (GDK_IS_PIXMAP (pixmap));
+  g_return_if_fail (!mask || GDK_IS_PIXMAP (mask));
 
   site = gtk_object_get_data (GTK_OBJECT (widget), "gtk-site-data");
   g_return_if_fail (site != NULL);
   
-  if (site->colormap)
-    gdk_colormap_unref (site->colormap);
-  if (site->pixmap)
-    gdk_pixmap_unref (site->pixmap);
-  if (site->mask)
-    gdk_pixmap_unref (site->mask);
+  gdk_colormap_ref (colormap);
+  gdk_pixmap_ref (pixmap);
+  if (mask)
+    gdk_pixmap_ref (mask);
 
+  gtk_drag_source_unset_icon (site);
+
+  site->icon_type = GTK_IMAGE_PIXMAP;
+  
+  site->icon_data.pixmap.pixmap = pixmap;
+  site->icon_data.pixmap.mask = mask;
   site->colormap = colormap;
-  if (colormap)
-    gdk_colormap_ref (colormap);
+}
+
+/**
+ * gtk_drag_source_set_icon_pixbuf:
+ * @widget: a #GtkWidget
+ * @pixbuf: the #GdkPixbuf for the drag icon
+ * 
+ * Sets the icon that will be used for drags from a particular widget
+ * from a #GdkPixbuf. GTK+ retains a reference count @pixbuf.
+ * and will release it when it is no longer needed.
+ **/
+void 
+gtk_drag_source_set_icon_pixbuf (GtkWidget   *widget,
+                                GdkPixbuf   *pixbuf)
+{
+  GtkDragSourceSite *site;
 
-  site->pixmap = pixmap;
-  if (pixmap)
-    gdk_pixmap_ref (pixmap);
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
 
-  site->mask = mask;
-  if (mask)
-    gdk_pixmap_ref (mask);
+  site = gtk_object_get_data (GTK_OBJECT (widget), "gtk-site-data");
+  g_return_if_fail (site != NULL);
+  
+  gdk_pixbuf_ref (pixbuf);
+
+  gtk_drag_source_unset_icon (site);
+
+  site->icon_type = GTK_IMAGE_PIXBUF;
+  site->icon_data.pixbuf.pixbuf = pixbuf;
 }
 
-/*************************************************************
- * gtk_drag_set_icon_window:
- *     Set a widget as the icon for a drag.
- *   arguments:
- *     context:
- *     widget:
- *     hot_x:    Hot spot
- *     hot_y:
- *   results:
- *************************************************************/
+/**
+ * gtk_drag_source_set_icon_stock:
+ * @widget: a #GtkWidget
+ * @stock: the ID of the stock icon to use..
+ * @size: size at which to render the stock icon
+ *
+ * Sets the icon that will be used for drags from a particular to
+ * a stock icon. 
+ **/
+void 
+gtk_drag_source_set_icon_stock (GtkWidget   *widget,
+                               const gchar *stock_id)
+{
+  GtkDragSourceSite *site;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (stock_id != NULL);
+
+  site = gtk_object_get_data (GTK_OBJECT (widget), "gtk-site-data");
+  g_return_if_fail (site != NULL);
+  
+  gtk_drag_source_unset_icon (site);
+
+  site->icon_data.stock.stock_id = g_strdup (stock_id);
+}
 
 static void 
 gtk_drag_set_icon_window (GdkDragContext *context,
@@ -2028,17 +2074,19 @@ gtk_drag_set_icon_window (GdkDragContext *context,
   info->destroy_icon = destroy_on_release;
 }
 
-/*************************************************************
+/**
  * gtk_drag_set_icon_widget:
- *     Set a widget as the icon for a drag.
- *   arguments:
- *     context:
- *     widget:
- *     hot_x:    Hot spot
- *     hot_y:
- *   results:
- *************************************************************/
-
+ * @context: the context for a drag. (This must be called 
+          with a  context for the source side of a drag)
+ * @widget: a toplevel window to use as an icon.
+ * @hot_x: the X offset within @widget of the hotspot.
+ * @hot_y: the Y offset within @widget of the hotspot.
+ * 
+ * Changes the icon for a widget to a given widget. GTK+
+ * will not destroy the icon, so if you don't want
+ * it to persist, you should connect to the "drag_end" 
+ * signal and destroy it yourself.
+ **/
 void 
 gtk_drag_set_icon_widget (GdkDragContext    *context,
                          GtkWidget         *widget,
@@ -2051,19 +2099,123 @@ gtk_drag_set_icon_widget (GdkDragContext    *context,
   gtk_drag_set_icon_window (context, widget, hot_x, hot_y, FALSE);
 }
 
-/*************************************************************
- * gtk_drag_set_icon_pixmap:
- *     Set a widget as the icon for a drag.
- *   arguments:
- *     context:
- *     colormap: Colormap for the icon window.
- *     pixmap:   
- *     mask:
- *     hot_x:    Hot spot
- *     hot_y:
- *   results:
- *************************************************************/
+static void
+set_icon_stock_pixbuf (GdkDragContext    *context,
+                      const gchar       *stock_id,
+                      GdkPixbuf         *pixbuf,
+                      gint               hot_x,
+                      gint               hot_y)
+{
+  GtkWidget *window;
+  gint width, height;
+  GdkPixmap *pixmap;
+  GdkPixmap *mask;
+  
+  g_return_if_fail (context != NULL);
+  g_return_if_fail (pixbuf != NULL || stock_id != NULL);
+  g_return_if_fail (pixbuf == NULL || stock_id == NULL);
+
+  gtk_widget_push_colormap (gdk_rgb_get_colormap ());
+  window = gtk_window_new (GTK_WINDOW_POPUP);
+  gtk_widget_pop_colormap ();
+
+  gtk_widget_set_events (window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
+  gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE);
+  
+  if (stock_id)
+    {
+      pixbuf = gtk_widget_render_icon (window, stock_id,
+                                      GTK_ICON_SIZE_DND, NULL);
+
+      if (!pixbuf)
+       {
+         g_warning ("Cannot load drag icon from stock_id %s", stock_id);
+         gtk_widget_destroy (window);
+         return;
+       }
+
+    }
+  
+  width = gdk_pixbuf_get_width (pixbuf);
+  height = gdk_pixbuf_get_width (pixbuf);
+
+  gtk_widget_set_usize (window,
+                       gdk_pixbuf_get_width (pixbuf),
+                       gdk_pixbuf_get_height (pixbuf));
+  gtk_widget_realize (window);
+
+  gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 128);
+  
+  gdk_window_set_back_pixmap (window->window, pixmap, FALSE);
+  
+  if (mask)
+    gtk_widget_shape_combine_mask (window, mask, 0, 0);
+
+  g_object_unref (G_OBJECT (pixmap));
+  g_object_unref (G_OBJECT (mask));
+
+  gtk_drag_set_icon_window (context, window, hot_x, hot_y, TRUE);
+}
+
+/**
+ * gtk_drag_set_icon_pixbuf:
+ * @context: the context for a drag. (This must be called 
+ *            with a  context for the source side of a drag)
+ * @pixbuf: the #GdkPixbuf to use as the drag icon.
+ * @hot_x: the X offset within @widget of the hotspot.
+ * @hot_y: the Y offset within @widget of the hotspot.
+ * 
+ * Sets @pixbuf as the icon for a given drag.
+ **/
+void 
+gtk_drag_set_icon_pixbuf  (GdkDragContext *context,
+                          GdkPixbuf      *pixbuf,
+                          gint            hot_x,
+                          gint            hot_y)
+{
+  g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+  g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+  
+  set_icon_stock_pixbuf (context, NULL, pixbuf, hot_x, hot_y);
+}
 
+/**
+ * gtk_drag_set_icon_pixbuf:
+ * @context: the context for a drag. (This must be called 
+ *            with a  context for the source side of a drag)
+ * @stock: the ID of the stock icon to use for the drag.
+ * @hot_x: the X offset within the icon of the hotspot.
+ * @hot_y: the Y offset within the icon of the hotspot.
+ * 
+ * Sets the the icon for a given drag from a stock ID.
+ **/
+void 
+gtk_drag_set_icon_stock  (GdkDragContext *context,
+                         const gchar    *stock_id,
+                         gint            hot_x,
+                         gint            hot_y)
+{
+  g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+  g_return_if_fail (stock_id != NULL);
+  
+  set_icon_stock_pixbuf (context, stock_id, NULL, hot_x, hot_y);
+}
+
+/**
+ * gtk_drag_set_icon_pixmap:
+ * @context: the context for a drag. (This must be called 
+ *            with a  context for the source side of a drag)
+ * @colormap: the colormap of the icon 
+ * @pixmap: the image data for the icon 
+ * @mask: the transparency mask for the icon
+ * @hot_x: the X offset within @pixmap of the hotspot.
+ * @hot_y: the Y offset within @pixmap of the hotspot.
+ * 
+ * Sets @pixmap as the icon for a given drag. GTK+ retains a
+ * reference count for the arguments, and will release them when
+ * they are no longer needed. In general, gtk_drag_set_icon_pixbuf()
+ * will be more convenient to use.
+ **/
 void 
 gtk_drag_set_icon_pixmap (GdkDragContext    *context,
                          GdkColormap       *colormap,
@@ -2100,51 +2252,43 @@ gtk_drag_set_icon_pixmap (GdkDragContext    *context,
   gtk_drag_set_icon_window (context, window, hot_x, hot_y, TRUE);
 }
 
-/*************************************************************
+/**
  * gtk_drag_set_icon_default:
- *     Set the icon for a drag to the default icon.
- *   arguments:
- *     context:
- *   results:
- *************************************************************/
-
+ * @context: the context for a drag. (This must be called 
+             with a  context for the source side of a drag)
+ * 
+ * Sets the icon for a particular drag to the default
+ * icon.
+ **/
 void 
 gtk_drag_set_icon_default (GdkDragContext    *context)
 {
   g_return_if_fail (context != NULL);
 
   if (!default_icon_pixmap)
-    {
-      default_icon_colormap = gdk_colormap_get_system ();
-      default_icon_pixmap = 
-       gdk_pixmap_colormap_create_from_xpm_d (NULL,
-                                              default_icon_colormap,
-                                              &default_icon_mask,
-                                              NULL, (gchar **)drag_default_xpm);
-      default_icon_hot_x = -2;
-      default_icon_hot_y = -2;
-    }
-
-  gtk_drag_set_icon_pixmap (context, 
-                           default_icon_colormap, 
-                           default_icon_pixmap, 
-                           default_icon_mask,
-                           default_icon_hot_x,
-                           default_icon_hot_y);
+    gtk_drag_set_icon_stock (context, GTK_STOCK_DND, -2, -2);
+  else
+    gtk_drag_set_icon_pixmap (context, 
+                             default_icon_colormap, 
+                             default_icon_pixmap, 
+                             default_icon_mask,
+                             default_icon_hot_x,
+                             default_icon_hot_y);
 }
 
-/*************************************************************
+/**
  * gtk_drag_set_default_icon:
- *     Set a default icon for all drags as a pixmap.
- *   arguments:
- *     colormap: Colormap for the icon window.
- *     pixmap:   
- *     mask:
- *     hot_x:    Hot spot
- *     hot_y:
- *   results:
- *************************************************************/
-
+ * @colormap: the colormap of the icon
+ * @pixmap: the image data for the icon
+ * @mask: the transparency mask for an image.
+ * @hot_x: The X offset within @widget of the hotspot.
+ * @hot_y: The Y offset within @widget of the hotspot.
+ * 
+ * Changes the default drag icon. GTK+ retains a reference count for the
+ * arguments, and will release them when they are no longer needed.
+ * This function is obsolete. The default icon should now be changed
+ * via the stock system by changing the stock pixbuf for GTK_STOCK_DND.
+ **/
 void 
 gtk_drag_set_default_icon (GdkColormap   *colormap,
                           GdkPixmap     *pixmap,
@@ -2178,7 +2322,7 @@ gtk_drag_set_default_icon (GdkColormap   *colormap,
 
 
 /*************************************************************
- * gtk_drag_source_handle_event:
+ * _gtk_drag_source_handle_event:
  *     Called from widget event handling code on Drag events
  *     for drag sources.
  *
@@ -2189,8 +2333,8 @@ gtk_drag_set_default_icon (GdkColormap   *colormap,
  *************************************************************/
 
 void
-gtk_drag_source_handle_event (GtkWidget *widget,
-                             GdkEvent  *event)
+_gtk_drag_source_handle_event (GtkWidget *widget,
+                              GdkEvent  *event)
 {
   GtkDragSourceInfo *info;
   GdkDragContext *context;
@@ -2477,16 +2621,12 @@ gtk_drag_source_event_cb (GtkWidget      *widget,
          site->state |= (GDK_BUTTON1_MASK << (event->button.button - 1));
          site->x = event->button.x;
          site->y = event->button.y;
-         retval = TRUE;
        }
       break;
       
     case GDK_BUTTON_RELEASE:
       if ((GDK_BUTTON1_MASK << (event->button.button - 1)) & site->start_button_mask)
-       {
-         site->state &= ~(GDK_BUTTON1_MASK << (event->button.button - 1));
-         retval = TRUE;
-       }
+       site->state &= ~(GDK_BUTTON1_MASK << (event->button.button - 1));
       break;
       
     case GDK_MOTION_NOTIFY:
@@ -2518,13 +2658,32 @@ gtk_drag_source_event_cb (GtkWidget      *widget,
 
              if (!info->icon_window)
                {
-                 if (site->pixmap)
-                   gtk_drag_set_icon_pixmap (context,
-                                             site->colormap,
-                                             site->pixmap,
-                                             site->mask, -2, -2);
-                 else
-                   gtk_drag_set_icon_default (context);
+                 switch (site->icon_type)
+                   {
+                   case GTK_IMAGE_EMPTY:
+                     gtk_drag_set_icon_default (context);
+                     break;
+                   case GTK_IMAGE_PIXMAP:
+                     gtk_drag_set_icon_pixmap (context,
+                                               site->colormap,
+                                               site->icon_data.pixmap.pixmap,
+                                               site->icon_data.pixmap.mask,
+                                               -2, -2);
+                     break;
+                   case GTK_IMAGE_PIXBUF:
+                     gtk_drag_set_icon_pixbuf (context,
+                                               site->icon_data.pixbuf.pixbuf,
+                                               -2, -2);
+                     break;
+                   case GTK_IMAGE_STOCK:
+                     gtk_drag_set_icon_stock (context,
+                                              site->icon_data.stock.stock_id,
+                                              -2, -2);
+                     break;
+                   default:
+                     g_assert_not_reached();
+                     break;
+                   }
                }
 
              retval = TRUE;
@@ -2547,12 +2706,7 @@ gtk_drag_source_site_destroy (gpointer data)
   if (site->target_list)
     gtk_target_list_unref (site->target_list);
 
-  if (site->pixmap)
-    gdk_pixmap_unref (site->pixmap);
-  
-  if (site->mask)
-    gdk_pixmap_unref (site->mask);
-  
+  gtk_drag_source_unset_icon (site);
   g_free (site);
 }
 
index 1a589d349b4dbe64ea3b8c3ab4379eb4234ed85a..8bb7aeb4299749ca97e91efa9c55c0cd1f74651d 100644 (file)
@@ -96,10 +96,14 @@ void gtk_drag_source_set  (GtkWidget            *widget,
 
 void gtk_drag_source_unset (GtkWidget        *widget);
 
-void gtk_drag_source_set_icon (GtkWidget     *widget,
-                              GdkColormap   *colormap,
-                              GdkPixmap     *pixmap,
-                              GdkBitmap     *mask);
+void gtk_drag_source_set_icon        (GtkWidget   *widget,
+                                     GdkColormap *colormap,
+                                     GdkPixmap   *pixmap,
+                                     GdkBitmap   *mask);
+void gtk_drag_source_set_icon_pixbuf (GtkWidget   *widget,
+                                     GdkPixbuf   *pixbuf);
+void gtk_drag_source_set_icon_stock  (GtkWidget   *widget,
+                                     const gchar *stock_id);
 
 /* There probably should be functions for setting the targets
  * as a GtkTargetList
@@ -113,27 +117,27 @@ GdkDragContext *gtk_drag_begin (GtkWidget         *widget,
 
 /* Set the image being dragged around
  */
-void gtk_drag_set_icon_widget  (GdkDragContext    *context,
-                               GtkWidget         *widget,
-                               gint               hot_x,
-                               gint               hot_y);
-
-void gtk_drag_set_icon_pixmap  (GdkDragContext    *context,
-                               GdkColormap       *colormap,
-                               GdkPixmap         *pixmap,
-                               GdkBitmap         *mask,
-                               gint               hot_x,
-                               gint               hot_y);
+void gtk_drag_set_icon_widget (GdkDragContext *context,
+                              GtkWidget      *widget,
+                              gint            hot_x,
+                              gint            hot_y);
+void gtk_drag_set_icon_pixmap (GdkDragContext *context,
+                              GdkColormap    *colormap,
+                              GdkPixmap      *pixmap,
+                              GdkBitmap      *mask,
+                              gint            hot_x,
+                              gint            hot_y);
+void gtk_drag_set_icon_pixbuf (GdkDragContext *context,
+                              GdkPixbuf      *pixbuf,
+                              gint            hot_x,
+                              gint            hot_y);
+void gtk_drag_set_icon_stock  (GdkDragContext *context,
+                              const gchar    *stock_id,
+                              gint            hot_x,
+                              gint            hot_y);
 
 void gtk_drag_set_icon_default (GdkDragContext    *context);
 
-void gtk_drag_set_default_icon (GdkColormap   *colormap,
-                               GdkPixmap     *pixmap,
-                               GdkBitmap     *mask,
-                               gint           hot_x,
-                               gint           hot_y);
-
-
 gboolean gtk_drag_check_threshold (GtkWidget *widget,
                                   gint       start_x,
                                   gint       start_y,
@@ -141,10 +145,18 @@ gboolean gtk_drag_check_threshold (GtkWidget *widget,
                                   gint       current_y);
 
 /* Internal functions */
-void gtk_drag_source_handle_event (GtkWidget *widget,
-                                  GdkEvent  *event);
-void gtk_drag_dest_handle_event (GtkWidget *toplevel,
-                                GdkEvent  *event);
+void _gtk_drag_source_handle_event (GtkWidget *widget,
+                                   GdkEvent  *event);
+void _gtk_drag_dest_handle_event (GtkWidget *toplevel,
+                                 GdkEvent  *event);
+
+#ifndef GTK_DISABLE_DEPRECATED
+void gtk_drag_set_default_icon (GdkColormap   *colormap,
+                               GdkPixmap     *pixmap,
+                               GdkBitmap     *mask,
+                               gint           hot_x,
+                               gint           hot_y);
+#endif /* !GTK_DISABLE_DEPRECATED */
 
 #ifdef __cplusplus
 }
index 88c204a145c8603b5b4b55c00910ed9f17f243c6..0f3545dc7b1f1559b7a7ef2c1c2c3ce1e727e07c 100644 (file)
@@ -123,6 +123,7 @@ typedef enum
   GTK_ICON_SIZE_SMALL_TOOLBAR,
   GTK_ICON_SIZE_LARGE_TOOLBAR,
   GTK_ICON_SIZE_BUTTON,
+  GTK_ICON_SIZE_DND,
   GTK_ICON_SIZE_DIALOG
 } GtkIconSize;
 
index 697281f75398243bb97bf1a5b0b8f5c13fe8120e..ae80f3180ba5c0d61b2610d5775b8b82731a9c1b 100644 (file)
@@ -461,6 +461,10 @@ get_default_icons (GtkIconFactory *factory)
   add_sized (factory, dialog_question, GTK_ICON_SIZE_DIALOG, GTK_STOCK_DIALOG_QUESTION);
   add_sized (factory, dialog_warning, GTK_ICON_SIZE_DIALOG, GTK_STOCK_DIALOG_WARNING);
   
+  /* dnd size only */
+  add_sized (factory, stock_new, GTK_ICON_SIZE_DND, GTK_STOCK_DND);
+  add_sized (factory, stock_dnd_multiple, GTK_ICON_SIZE_DND, GTK_STOCK_DND_MULTIPLE);
+  
   /* Only have button sizes */
   add_sized (factory, stock_button_apply, GTK_ICON_SIZE_BUTTON, GTK_STOCK_APPLY);
   add_sized (factory, stock_button_cancel, GTK_ICON_SIZE_BUTTON, GTK_STOCK_CANCEL);
@@ -585,7 +589,7 @@ init_icon_sizes (void)
 {
   if (icon_sizes == NULL)
     {
-#define NUM_BUILTIN_SIZES 6
+#define NUM_BUILTIN_SIZES 7
       gint i;
 
       icon_aliases = g_hash_table_new (g_str_hash, g_str_equal);
@@ -625,6 +629,11 @@ init_icon_sizes (void)
       icon_sizes[GTK_ICON_SIZE_LARGE_TOOLBAR].width = 24;
       icon_sizes[GTK_ICON_SIZE_LARGE_TOOLBAR].height = 24;
 
+      icon_sizes[GTK_ICON_SIZE_DND].size = GTK_ICON_SIZE_DND;
+      icon_sizes[GTK_ICON_SIZE_DND].name = "gtk-dnd";
+      icon_sizes[GTK_ICON_SIZE_DND].width = 32;
+      icon_sizes[GTK_ICON_SIZE_DND].height = 32;
+
       icon_sizes[GTK_ICON_SIZE_DIALOG].size = GTK_ICON_SIZE_DIALOG;
       icon_sizes[GTK_ICON_SIZE_DIALOG].name = "gtk-dialog";
       icon_sizes[GTK_ICON_SIZE_DIALOG].width = 48;
index 4f61bf4fc6ea4ce77b766a6a7e09194639c6e55f..f51d8253dafa315a56aed6a63f21f2caf1c76300 100644 (file)
@@ -946,13 +946,13 @@ gtk_main_do_event (GdkEvent *event)
       
     case GDK_DRAG_STATUS:
     case GDK_DROP_FINISHED:
-      gtk_drag_source_handle_event (event_widget, event);
+      _gtk_drag_source_handle_event (event_widget, event);
       break;
     case GDK_DRAG_ENTER:
     case GDK_DRAG_LEAVE:
     case GDK_DRAG_MOTION:
     case GDK_DROP_START:
-      gtk_drag_dest_handle_event (event_widget, event);
+      _gtk_drag_dest_handle_event (event_widget, event);
       break;
     default:
       g_assert_not_reached ();
index c870bbbb771e7f547483cc64326f57eec2cf3162..4aff435d0da3b7792207647e674e6111ba953dff 100644 (file)
@@ -67,6 +67,9 @@ void          gtk_stock_item_free (GtkStockItem       *item);
 #define GTK_STOCK_DIALOG_ERROR     "gtk-dialog-error"
 #define GTK_STOCK_DIALOG_QUESTION  "gtk-dialog-question"
 
+#define GTK_STOCK_DND              "gtk-dnd"
+#define GTK_STOCK_DND_MULTIPLE     "gtk-dnd-multiple"
+
 #define GTK_STOCK_ADD              "gtk-add"
 #define GTK_STOCK_APPLY            "gtk-apply"
 #define GTK_STOCK_BOLD             "gtk-bold"
index eac408bce1ea17d494a89406f339366af98c9e68..22f1234cc94c0ff59884499a851adb30ded8b73b 100644 (file)
@@ -24,6 +24,7 @@ IMAGES = @STRIP_BEGIN@                        \
        stock_convert.png               \
        stock_copy.png                  \
        stock_cut.png                   \
+       stock_dnd_multiple.png          \
        stock_down_arrow.png            \
        stock_exec.png                  \
        stock_exit.png                  \
@@ -85,6 +86,7 @@ VARIABLES = @STRIP_BEGIN@                                                                     \
                stock_button_apply              $(srcdir)/stock_button_apply.png                \
                stock_button_cancel             $(srcdir)/stock_button_cancel.png               \
                stock_button_close              $(srcdir)/stock_button_close.png                \
+               stock_dnd_multiple              $(srcdir)/stock_dnd_multiple.png                \
                stock_button_no                 $(srcdir)/stock_button_no.png                   \
                stock_button_ok                 $(srcdir)/stock_button_ok.png                   \
                stock_button_yes                $(srcdir)/stock_button_yes.png                  \
diff --git a/gtk/stock-icons/stock_dnd_multiple.png b/gtk/stock-icons/stock_dnd_multiple.png
new file mode 100644 (file)
index 0000000..a4c21ec
Binary files /dev/null and b/gtk/stock-icons/stock_dnd_multiple.png differ
diff --git a/gtk/stock-icons/stock_dnd_multiple_32.png b/gtk/stock-icons/stock_dnd_multiple_32.png
new file mode 100644 (file)
index 0000000..a4c21ec
Binary files /dev/null and b/gtk/stock-icons/stock_dnd_multiple_32.png differ